package ext.tianma.cascade.config;

import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashMap;
import java.util.LinkedHashMap;
import java.util.List;

import wt.util.WTException;
import wt.util.WTProperties;

public class ConfigCache extends HashMap {

	private static ConfigCache cache;

	public static String sep;
	public static String wt_home;
//	public static String configFilePath;
//	static {
//		try {
//			WTProperties wp = WTProperties.getLocalProperties();
//			sep = wp.getProperty("dir.sep");
//			wt_home = wp.getProperty("wt.home");
//			configFilePath = new StringBuilder().append(wt_home).append(sep)
//					.append("codebase").append(sep).append(ConfigCache.class.getPackage().getName().replace(".", sep))
//					.append(sep).append("config.ini").toString();
////			configFilePath = "d:/config.ini";
//			
//			
//
//		} catch (IOException e) {
//			e.printStackTrace();
//		}
//	}

	private long configModifyTime = 0;
	private long tempTime = 0;

	private ConfigCache() {
		super();
	}

	public static ConfigCache getInstance() {
		if (cache == null) {
			cache = new ConfigCache();
		}
		return cache;
	}

//	private void initCache() {
//		clear();
//		try {
//			// 遍历配置文件
//			InputStream fis = new FileInputStream(configFilePath);
//			BufferedReader br;
//			br = new BufferedReader(new InputStreamReader(fis, "utf-8"));
//			String line;
//			String section = null;
//			while ((line = br.readLine()) != null) {
//				if (line.startsWith("#") || line.startsWith(";"))
//					continue;
//
//				int deliPos = line.indexOf("=");
//				if (deliPos < 0)
//					continue;
//
//				String key = line.substring(0, deliPos).trim();
//				String val = line.substring(deliPos + 1, line.length()).trim();
////				System.out.println(key+"="+val);
//				put(key, val);
//			}
//		} catch (Exception e) {
//			e.printStackTrace();
//		}
//		configModifyTime = tempTime;
//	}

//	/**
//	 * 判断修改时间
//	 * @return
//	 */
//	private boolean isModify() {
//		File file = new File(configFilePath);
//		tempTime = file.lastModified();
//		return configModifyTime != tempTime;
//	}
//
//	public Object get(Object key) {
//		if (isModify()) {
//			initCache();
//		}
//		return super.get(key);
//	}

	public void clear() {
		configModifyTime = 0;
		super.clear();
	}
}
